Database consolidation involves distributing and sharing computing resources among multiple databases managed by one or more database servers of database management systems (DBMS). Databases may be consolidated using a container DBMS. A consolidated database, such as a multitenant container database (CDB), includes one or more pluggable databases (PDBs). In a container DBMS, each pluggable database may be opened or closed in the container database independently from other pluggable databases.
Furthermore, a DBMS may have multiple server instances for a same container database. For example, sharding, replication, and horizontal scaling are topologies that may utilize multiple server instances for a database.
Typically each server instance occupies a separate host computer. Server instances may exchange data content and control information over a computer network. For example, server instances may collaborate to answer a federated query, to synchronize replication, and to rebalance data storage demand.
Each database server instance may be a container database that contains one or more pluggable databases. However, server instances need not have identical sets of pluggable databases. For example, one server instance may have a particular pluggable database that another server instance lacks.
Pluggable databases may be “plugged in” to a container database, and may be transported between database servers and/or DBMSs. The container DBMS may manage multiple pluggable databases and a given database server instance may serve those pluggable databases from the container database. As such, a given container database allows multiple pluggable databases to run on the same database server and/or database server instance, allowing the computing resources of a single database server or instance to be shared between multiple pluggable databases.
A database application may be composed of an application root and multiple pluggable databases. The application root and application pluggable databases belong to a container database. Without introducing a separate database server, an application's pluggable databases may be more or less isolated from other applications of the same container database by placing all of the application's pluggable databases within a dedicated application container. The related application titled “Application Containers for Container Databases” further explains the nature of a container database, an application container, and an application pluggable database, as well as their relationship to each other. For example, an application container is responsible for storing application metadata. For such storage, the application container may have an application root, which is another database that belongs to the container database.
An application may access a pluggable database by establishing a database session on the container DBMS for that pluggable database, where a database session represents the connection between an application and the container DBMS for accessing the pluggable database. A database session is initiated for a pluggable database by, for example, transmitting a request for a new connection to the container DBMS, the request specifying the pluggable database. A container DBMS may host multiple database sessions, each database session being for one of multiple pluggable databases.
The architecture of a container database greatly facilitates transporting the pluggable databases of an application between database servers and/or DBMSs. Tablespace files and a data dictionary store may be moved between environments of container DBMSs using readily available mechanisms for copying and moving files.
An application container provides advantages for database consolidation. Some advantages are provided as a consequence of using pluggable databases, such as a high degree of isolation concurrently along with a high degree of resource sharing. Multiple pluggable databases may run on the same database server and/or database server instance, allowing the computing resources of a single database server or instance to be shared between multiple pluggable databases. Other advantages are arise from the application container itself, such as providing resources of an application for sharing by pluggable databases of the application.
The isolation provided by an application container is at an existential level. The users of a database session established for a pluggable database may only access or otherwise view database objects defined via the database dictionary of the pluggable database or the database dictionary of its application container. Database objects of other application containers cannot be accessed or viewed. This degree of isolation is extended to administrators.